﻿/*{
author=pk2.2（风铃等）
version=2.0
date=2023/02/1
}*/


/***
允许AI和玩家一样,可以花钱来加固城防.
***/

 // ## 2023/05/03 # 铃 # 修复bug,美化显示。 ##
 // ## 2023/05/02 # 铃 # 适配新的内政系统。 ##
 // ## 2023/05/01 # 铃 # 完善了新的参数。 ##
// ## 2022/12/03 # 铃 # 新做了AI的加固城防功能。 ##

namespace 加固城防_AI
{

	const int 加固城防_发动概率_城市 = 5;

	const int def_dec = 300;
	const int gold_num = 3000;

	// ===========================================

	class Main
	{

		Main()
		{
			pk::bind(202, pk::trigger202_t(onAIRunningOrder));
		}

		void onAIRunningOrder(pk::ai_context @context, pk::building @building, int cmd)
		{
			if (cmd == 据点AI_加固城防)
			{
				pk::force@ force = context.force;
				auto building_p = ch::get_baseIA(building.get_id());
				// 钱越多触发概率越高
				if (pk::rand_bool(加固城防_发动概率_城市 + int(sqrt(pk::get_gold(building)) * 0.03)))
				{
					if (pk::get_gold(building) > 20000 and building_p.city_defense < 3000)
					{
						pk::add_gold(building, -gold_num, true);
						building_p.city_defense += def_dec;
						pk::history_log(building.pos, force.color, pk::encode(pk::format("\x1b[1x{}修筑防御工事,增加了\x1b[1x{}点额外城防", pk::decode(pk::get_name(building)), int(def_dec), 0)));

						// 用额外城防去修复防御
						if (int(building.hp) - int(pk::get_max_hp(building)) < 0)
						{
							int 可修复防御 = pk::get_max_hp(building) - building.hp;
							int 修复防御 = pk::min(可修复防御, building_p.city_defense);
							building_p.city_defense -= 修复防御;
							pk::add_hp(building, 修复防御, true);
						}
					}
				}
			} 

		} 



	} // class

	Main main;
}